package cn.iocoder.yudao.module.call.framework.client;

import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.module.call.api.client.dto.*;

import java.util.List;
import java.util.Map;

public interface CallClient {

    Long getId();

    String getName();

    String getMode();

    String getCode();

    CallRespDTO handleCall(CallReqDTO callReqDTO);

    AgentRespDTO handleAgent(AgentReqDTO agentReqDTO);

    void handleHangup(String callId);

    CallNotifyDTO handleNotify(JSONObject jsonObject);

    boolean createAgent(AgentReqDTO agentReqDTO);

    // 编辑坐席： 主要用于更改坐席班组
    void updateAgent(AgentReqDTO agentReqDTO);

    /**
     * 获取sip账号，
     * @param number 分机号
     * @since 2024-03-14
     * @author PetePower
     * @return 登录信息
     */
    JSONObject getAccountInfo(String number);


    Boolean forceLogout(String agentId);

    Boolean forceNotReady(String agentId);

    Boolean forceReady(String agentId);

    Boolean forceSkillChange(String agentId, List<Map<String, Object>> skills);
}
